package com.shlh.saas.service.canton.buyer;

import com.alipay.api.domain.BuyerInfo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.shlh.saas.entity.canton.buyer.*;

import java.util.List;

/**
 * 广交会采购商服务接口
 */
public interface CantonFairBuyerService {
    
    /**
     * 分页查询第127届广交会采购商
     * @param companyName 公司名称
     * @param country 国家
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页结果
     */
    Page<CantonFairBuyer127> pageBuyer127(String companyName, String country, int pageNum, int pageSize);
    
    /**
     * 分页查询第134届广交会采购商
     * @param companyName 公司名称
     * @param country 国家
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页结果
     */
    Page<CantonFairBuyer134> pageBuyer134(String companyName, String country, int pageNum, int pageSize);
    
    /**
     * 分页查询第135届广交会采购商
     * @param companyName 公司名称
     * @param country 国家
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页结果
     */
    Page<CantonFairBuyer135> pageBuyer135(String companyName, String country, int pageNum, int pageSize);
    
    /**
     * 分页查询第136届广交会采购商
     * @param companyName 公司名称
     * @param country 国家
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页结果
     */
    Page<CantonFairBuyer136> pageBuyer136(String companyName, String country, int pageNum, int pageSize);
    
    /**
     * 根据ID获取第127届广交会采购商
     * @param id ID
     * @return 采购商信息
     */
    CantonFairBuyer127 getBuyer127ById(Integer id);
    
    /**
     * 根据ID获取第134届广交会采购商
     * @param id ID
     * @return 采购商信息
     */
    CantonFairBuyer134 getBuyer134ById(Integer id);
    
    /**
     * 根据ID获取第135届广交会采购商
     * @param id ID
     * @return 采购商信息
     */
    CantonFairBuyer135 getBuyer135ById(Integer id);
    
    /**
     * 根据ID获取第136届广交会采购商
     * @param id ID
     * @return 采购商信息
     */
    CantonFairBuyer136 getBuyer136ById(Integer id);
    
    /**
     * 根据公司名称查询所有届次的广交会采购商
     * @param companyName 公司名称
     * @return 采购商信息列表（不同届次）
     */
    List<Object> findByCompanyName(String companyName);
    
    /**
     * 在所有字段中搜索关键词
     * 
     * @param keyword 搜索关键词
     * @param offset 偏移量
     * @param limit 限制数量
     * @param sessionInfo 广交会届数，如"127"、"134"等
     * @param country 国家
     * @return 符合条件的数据列表
     */
    List<BaseCantonFairBuyer> searchByKeywordInAllFields(String keyword, String productType, int offset, int limit,
                                                        String sessionInfo, String country, String hasContact);
    
    /**
     * 统计所有字段中包含关键词的记录数量
     * 
     * @param keyword 搜索关键词
     * @param sessionInfo 广交会届数，如"127"、"134"等
     * @param country 国家
     * @return 记录总数
     */
    long countByKeywordInAllFields(String keyword, String productType, String sessionInfo, String country, String hasContact);
    
    /**
     * 获取采购商完整的联系信息
     *
     * @param purchaserId 采购商ID
     * @param sessionNumber 广交会届数
     * @param fieldName 需要获取的字段名
     * @return 完整的联系信息
     */
    String getFullContactInfo(Long purchaserId, Integer sessionNumber, String fieldName);

    /**
     * 导出专用：在所有字段中搜索关键词（返回完整敏感信息，不脱敏）
     *
     * @param keyword 搜索关键词
     * @param offset 偏移量
     * @param limit 限制数量
     * @param sessionInfo 广交会届数，如"127"、"134"等
     * @param country 国家
     * @return 符合条件的数据列表（包含完整敏感信息）
     */
    List<BaseCantonFairBuyer> searchByKeywordInAllFieldsForExport(String keyword, String productType, int offset, int limit,
                                                                 String sessionInfo, String country, String hasContact);
}